package com.adou.d8.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

/**
 * 目标：利用Callable接口和FuturnTask实现
 */
public class ThreadTest4 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 3.创建一个callable的对象
        Callable myCallable = new MyCallable(100);

        // 4.把callable封装futuetask对象
        // 未来任务对象有什么作用
        // 1. 实现runable,
        // 2.线程执行完毕，用未来任务对象调用get方法，来获取线程执行结果
        FutureTask<String> future = new FutureTask<>(myCallable);

        // 5。把未来任务对象交给线程对象
        new Thread(future).start();

        // 6.获取线程执行完毕后结果

        // 执行到这，线程会暂停，等待上面线程执行完毕，才往下执行
        System.out.println(future.get());

    }
}
